package com.cskaoyan.javase.oop1._6constructor;

/**
 * 构造器中,隐含了this传参指向当前对象
 * 除了可以在构造器中,使用这个this去访问自身成员变量和方法外
 * 还有一种特殊的用途:
 *      可以用来表示,调用该类/自身类的其他构造器
 *      语法:
 *      this(实参列表)
 *      表示调用自身类中,对应形参的构造方法
 *
 * 注意事项:
 *      this在表示调用自身类构造器时,必须在构造器代码的第一行!!!
 *      思考: 既然它只能在第一行,那么它在构造器中只能用一次.
 *
 * @since 16:07
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        Phone p = new Phone();
        Phone p2 = new Phone(3000, "小米12");
        Phone p3 = new Phone(10000, "三星GalaxyS22+", "三星");

    }
}

class Phone {
    double price;
    String brand;
    String name;

    public Phone() {
    }

    public Phone(double price, String name) {
        this.price = price;
        this.name = name;
    }

    // 三参构造器,给所有成员变量赋值
    public Phone(double price, String name, String brand) {
        // 表示调用自身的price name双参构造器
        // Call to 'this()' must be first statement in constructor body
        this(price, name);
        this.brand = brand;
    }
}